package com.dhcc.base;

import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import jakarta.validation.constraints.NotEmpty;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import java.util.List;

/**
 * 基础服务实现类，提供通用的业务操作实现
 * @param <T> 实体类型
 * @param <M> Mapper 类型
 * @author Chill
 */
@Validated
public class BaseServiceImpl<M extends BaseMapper<T>, T extends BaseEntity> extends ServiceImpl<M, T> implements BaseService<T> {

	@Override
	public boolean deleteByIdLogic(@NotEmpty String id) {
		// 创建更新条件包装器
		UpdateWrapper<T> updateWrapper = new UpdateWrapper<>();
		// 设置逻辑删除标志为 1
		updateWrapper.set("del_flag", 1);
		// 根据 ID 条件更新
		updateWrapper.eq("id", id);
		// 执行更新操作
		return update(updateWrapper);
	}

	@Override
	@Transactional(
			rollbackFor = {Exception.class}
	)
	public boolean deleteBatchByIdsLogic(@NotEmpty List<String> ids) {
		// 创建更新条件包装器
		UpdateWrapper<T> updateWrapper = new UpdateWrapper<>();
		// 设置逻辑删除标志为 1
		updateWrapper.set("del_flag", 1);
		// 根据 ID 列表条件更新
		updateWrapper.in("id", ids);
		// 执行更新操作
		return update(updateWrapper);
	}

}
